package com.xunfang.interception;

import com.xunfang.common.Result;
import com.xunfang.exception.LoginException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author yellow Docter
 * @date 2023 -10-30
 * @desc
 *
 *    springmvc 的异常处理:
 *    1、全局异常处理
 *       出现异常不自己处理、往上抛异常、mapper->service->controller->dispathServlet
 *       dispathServlet 会统一处理异常
 *
 *    2、全局异常如何处理
 *       注解:   @RestControllerAdvice + @ExceptionHandler 注解
 *       @RestControllerAdvice (异常通知处理类)   标记这个类是全局异常处理
 *       @ExceptionHandler     捕获指定的异常、出现了指定的异常、执行ExceptionHandler标记的方法
 *
 */
@RestControllerAdvice
public class ExceptionHandlerController {

    //标记处理 指定的异常
    @ExceptionHandler(LoginException.class)
    public Result handlerExceptionLogin(Exception e){
        return Result.fail(e.getMessage());
    }

    //处理空指针的异常
    @ExceptionHandler(NullPointerException.class)
    public Result handlerExceptionNullException(Exception e){
        return Result.fail(e.getMessage());
    }

}
